;:poke56,80:clr
;:sys36864
	;.opt oo
	*= $c000 	; 2084
zeillen	=80
strout	=$ab1e
vic	=$d000
input	=$ffcf
open	=$ffc0
close	=$ffc3
chkin	=$ffc6
get	=65508
clrchn	=$ffcc
chkout	=$ffc9
setpar	=$ffba
setnam	=$ffbd
flop	=8
clall	=$ffe7
print	=$ffd2
key	=198
return	=$aad7
text	=$5000
tmp	=2
status	=144
axout	=$bdcd
tmp2	=4
sollwert	=60 	; sind ueber (80-60) spaces am ende der zeile, absatz machen
	jmp gorun
namlen	brk
last	brk
trenn	brk
name	.byte "\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4"
hello	.byte "\x93\x08\x0e\x9e\x11\x1dKonverter: \x05Startexter\x9e -> \x05Textomat Plus"
	.byt 13
	.byte "\x9e\x11 Programmiert von \x05N.Heusler        \x9eV\x051.4"
	.byt 13
	.byte "\x9e\x11 Ein NSS-Programm     (c) nh-100888-arr"
	.byt 13
	.byte "\x11\x11 Name des Textes: \x05"
	brk
i0	.byte "i0"
error	.byte "\x05\x11 Diskettenfehler:"
	.byt 13,32,18
	brk
longt	.byte "\x9e\x11 Langes Format ? [J/N]\x9d\x9d\x9d\x9d\x9d\x05"
	brk
ruc	.byte "    "
	brk
nopanik	.byt 13
	.byte "\x11\x9e Bitte warten - Text wird gelesen."
	.byt 13,0
save	.byt 13
	.byte " \x9eText wird gespeichert."
	.byt 13,0
aus	.byte "\x9e\x11 Fertig. Alles OK, keine Fehler.\x90"
	.byt 13,0
okay	.byte "\x11 Text eingelesen. Laenge: \x05"
	brk
oka2	.byte "\x9e Bytes"
	.byt 13
	.byte "\x11 \x9eBitte \x05Zieldisk\x9e einlegen !"
	.byt 13,0
fra2	.byt 13
	.byte "\x9e \x11Trennvorschlaege uebernehmen ? [J/N]\x05\x9d\x9d\x9d\x9d\x9d"
	brk
konf1	.byt 13
	.byte "<>[]\x85\x86\x87\x88\x89\x8a\x8b\x8c"
	.byt $df,$a9,$a3,$b8,$23,$a5,$a4
konf2	.byt 32,187,190,182,178,165,161,166,167,169,168,170
	.byt 35,223,223,175,34,181,172,171
gorun	lda #<hello
	ldy #>hello
	jsr strout
	lda #32
	sta vic+32
	ldx #15
clrnam	sta name,x
	dex
	bpl clrnam
	lda #6
	sta vic+33
	ldx #0
getnam	jsr input
	cmp #13
	beq ret
	sta name,x
	inx
	cpx #16
	bcc getnam
ret	txa
	beq getnam
	stx namlen
	jsr return
gogo	jsr clall
	lda #15
	tay
	ldx #flop
	jsr setpar
	lda #2
	ldx #<i0
	ldy #>i0
	jsr setnam
	jsr open
	jsr errchn
	bcs gogo
	lda namlen
	ldx #<name
	ldy #>name
	jsr setnam
	ldy #0
	lda #3
	ldx #flop
	jsr setpar
	jsr open
	jsr errchn
	bcs gorun
	lda #<longt
	ldy #>longt
	jsr strout
	lda #0
	sta key
getjn	jsr get
	tax
	cmp #"j"
	beq ja
	cmp #"n"
	bne getjn
	lda #0
ja	pha
	txa
	ora #128
	jsr print
	lda #<ruc
	ldy #>ruc
	jsr strout
	jsr trennask
	ldx #3
	jsr chkin
	lda #<nopanik
	ldy #>nopanik
	jsr strout
	jsr get
	jsr get
	lda #<text
	ldy #>text
	sta tmp
	sty tmp+1
	sta tmp2
	sty tmp2+1
	pla
	beq short
zeile	ldy #zeillen
	lda #32
	sta (tmp),y
	ldy #0
getlong	jsr xget
	sta (tmp),y
	iny
	cpy #zeillen
	bcc getlong
	ldy #0
fillspace	lda (tmp),y
	cmp #32
	bne next
	lda #160
	sta (tmp),y
	iny
	cpy #zeillen
	bcc fillspace
next	ldy #zeillen-1
shorten	lda (tmp),y
	and #127
	cmp #32
	bne endfund
	dey
	bpl shorten
endfund	iny
	tya
	beq leerzeile
	cpy #sollwert
	bcc absatz
addi	sec
	adc tmp
	sta tmp
	bcc zeile
	inc tmp+1
	bne zeile
leerzeile	lda #"_"
	sta (tmp),y
	iny
	sta (tmp),y
	lda #1
	bne addi
absatz	pha
	lda #"_"
	sta (tmp),y
	pla
	jmp addi
short	jsr xget
	ldy #0
	sta (tmp),y
	inc tmp
	bne short
	inc tmp+1
	bne short
errchn	ldx #15
	jsr chkin
	jsr get
	cmp #"0"
	bne ko
get0	jsr get
	cmp #$d
	bne get0
	jmp clrchn
ko	pha
	lda #<error
	ldy #>error
	jsr strout
	pla
	jsr print
get1	jsr get
	jsr print
	cmp #$d
	bne get1
	jsr waitkey
	jsr clrchn
	sec
	rts
waitkey	ldx #0
	stx key
wk	cpx key
	beq wk
	dec key
	rts
xget	jsr get
	pha
	lda status
	beq null
	pla
	pla
	pla
	jmp fertig
null	pla
	rts
transname	ldx #15
trna	lda name,x
	cmp #"*"
	bne nost
st	lda #"."
nost	cmp #"?"
	beq st
	sta name,x
	dex
	bpl trna
	rts
trennask	lda #<fra2
	ldy #>fra2
	jsr strout
	lda #0
	sta key
getnj	jsr get
	tax
	cmp #"j"
	beq yes
	cmp #"n"
	bne getnj
	lda #0
yes	sta trenn
	txa
	ora #128
	jsr print
	lda #<ruc
	ldy #>ruc
	jmp strout
fertig	jsr transname
	jsr clrchn
	lda #3
	jsr close
	lda #"_"
	sta last
	lda #<okay
	ldy #>okay
	jsr strout
	lda tmp
	sec
	sbc #<text
	tax
	lda tmp+1
	sbc #>text
	jsr axout
	lda #<oka2
	ldy #>oka2
	jsr strout
	jsr waitkey
neu	lda #<save
	ldy #>save
	jsr strout
	lda #3
	jsr close
	lda #"T"
	sta name+15
	lda #16
	ldx #<name
	ldy #>name
	jsr setnam
	ldx #flop
	lda #3
	ldy #1
	jsr setpar
	jsr open
	jsr errchn
	bcs neu
	ldx #3
	jsr chkout
goout	ldy #0
	lda (tmp2),y
	ldx #konf2-konf1-1
such	cmp konf1,x
	beq found
	dex
	bpl such
	bmi ni
found	lda konf2,x
ni	cmp #32
	bne p
	cmp last
	beq ct
	ldx last
	cpx #"_"
	beq ct
	cpx #$dc
	beq ct
p	sta last
	cmp #$dc
	bne weg
	ldx trenn
	beq ct
	lda #162
weg	jsr print
ct	inc tmp2
	bne pruef
	inc tmp2+1
pruef	lda tmp2+1
	cmp tmp+1
	bcc goout
	lda tmp2
	cmp tmp
	bcc goout
	jsr clrchn
	lda #3
	jsr close
	jsr errchn
	bcc alt
	jmp neu
alt	lda #15
	jsr close
	lda #<aus
	ldy #>aus
	jmp strout
